"""
logging模块
1)日志收集器
定义日志收集器:要从代码当中按照要求收集对应的日志，并输出到渠道当中。a、要收集哪个级别以上的日志?
b、日志是要什么样的格式显示?
c、日志要输出到哪些地方去?

2)日志级别(Level):
debug - info - warning -error - critical(FATA)
调试     基本     警告     报错      严重错误

3)日志显示的格式(Formatter):
时间、日志级别、代码文件、第几行:信息

4)日志输出渠道(Handle) :
文件(FileHandle)、控制台(StreamHandle)



自定义日志收集:
1、调用logger = logging.getLogger(日志名字)来生成一个日志收集器对象
2、设置你的日志收集级别。logger.setLevel(日志级别)
3、使用logging.Formatter类来定制要输出到控制台/文件当中的日志格式
4、使用handle1 = logging.streamHandle()来创建一个控制台渠道对象，
并将控制台要输出的日志格式设置为3当中的formatter.设置: handle1.setformatter(Formatter对象)
5、将6当中的handle1添加到logger当中，那么日志就可以输出到控制台。

6、使用handle2 = logging.FileHandle(日志文件路径)来创建一个控制台渠道对象，
并将控制台要输出的日志格式设置为3当中的formatter.设置: handle2.setformatter(Formatter对象)
7、将6当中的handle2添加到logger当中，那么日志就可以输出到文件当中。


8、使用handle3 = logging.FileHandle(日志文件路径)来创建一个控制台渠道对象，
并将控制台要输出的日志格式设置为3当中的formatter.设置: handle3.setformatter(Formatter对象)
指定handle3的日志级别为Eorr
handle3.setLevel(logging.ERROR)
9、将6当中的handle3添加到logger当中，那么日志就可以输出到文件当中。
"""

import logging
#第一步:
#创建一个日志收集器
logger = logging. getLogger("nmb-py37")
#第二步:
#设自定义要收集的日志级别、自定义日志格式、自定义输出渠道
#设自定义要收集的日志级别
logger.setLevel(logging.INFO)
#自定义日志格式(Formatter) 时间、收集器名字、日志级别、文件名字、行号、函数的名字、输出的名字
fmt_str = "%(asctime)s %(name)s %(levelname)s %(filename)s %(lineno)d %(message)s"
#实例化一个日志格式类
formatter = logging.Formatter(fmt_str)

# 实例化渠道(Handle).
# 控制台(StreamHandle) 创建handle，输出到控制台
handle1 = logging.StreamHandler()
#设置渠道当中的日志显示格式  handle的控制台用刚才创建的formatter日志格式
handle1.setFormatter(formatter)
#将渠道与日志收集器绑定起来
logger.addHandler(handle1)



# 创建一个日志文件，输出到文件
handle2 = logging.FileHandler("打印的日志文件",encoding="utf-8")
# 绑定日志文件的格式
handle2.setFormatter(formatter)
# 将渠道与收集器绑定
logger.addHandler(handle2)



# 创建一个日志文件，输出到文件,指定输出Error格式
handle3 = logging.FileHandler("打印的日志文件-Error",encoding="utf-8")
# 绑定日志文件的格式
handle3.setFormatter(formatter)
# 指定handle3输出格式为Error
handle3.setLevel(logging.ERROR)
# 将渠道与收集器绑定
logger.addHandler(handle3)

logger.info("hello, logging! ! ")
logger.warning("hello, warning! !")
logger.error("输出的Eorr格式的文件")



